﻿using ICSharpCode.AvalonEdit.Highlighting;

namespace Oxage.Controls.AvalonEditExtensions
{
	public interface ISyntaxHighlighter
	{
		/// <summary>
		/// When implemented gets a friendly name of a syntax highlighter.
		/// </summary>
		string Name { get; }

		/// <summary>
		/// When implemented gets a list of file extensions, e.g. ".cnc", ".nc", ".g"
		/// </summary>
		string[] FileExtensions { get; }

		/// <summary>
		/// When implemented gets a string filter for file dialogs.
		/// </summary>
		/// <returns></returns>
		string GetDialogFilter();

		/// <summary>
		/// When implemented gets a syntax highlighting definition.
		/// </summary>
		/// <returns></returns>
		IHighlightingDefinition GetDefinition();

		/// <summary>
		/// When implemented gets a value indicating whether breakpoint is allowed on the selected text.
		/// </summary>
		/// <param name="text"></param>
		/// <returns></returns>
		bool IsBreakpointAllowed(string text);
	}
}
